/**
 * @brief: 获取 url 参数值
 * @param {*} key 需要获取的查询字段的值
 * @return {*}
 */
function fnGetQueryString(key) {
  //正则获取url后面的参数值，如?env=dev&exp=123
  var reg = new RegExp('(^|&)' + key + '=([^&]*)(&|$)')
  var result = window.location.search.substr(1).match(reg)
  console.log(result)
  return result ? decodeURIComponent(result[2]) : false
}

/**
 * @brief: 删除 url 指定参数名并返回新的url
 * @param {*} name
 * @return {*}
 */
function funcUrlDel(name) {
  var loca = window.location
  var baseUrl = loca.origin + loca.pathname + '?'
  var query = loca.search.substr(1)
  if (query.indexOf(name) > -1) {
    var obj = {}
    var arr = query.split('&')
    for (var i = 0; i < arr.length; i++) {
      arr[i] = arr[i].split('=')
      obj[arr[i][0]] = arr[i][1]
    }
    delete obj[name]
    var url =
      baseUrl +
      JSON.stringify(obj)
        .replace(/[\"\{\}]/g, '')
        .replace(/\:/g, '=')
        .replace(/\,/g, '&')
    return url
  }
}

// test
console.log(funcUrlDel('http://192.168.1.34:8060/mobile/task/taskDetail.html?taskId=88'))

function getlinkSearch(key, reqStr) {
  var reg = new RegExp('(^|&)' + key + '=([^&]*)(&|$)')
  var result = reqStr.substr(1).match(reg)
  return result ? decodeURIComponent(result[2]) : false
}

/**
 * @brief: 获取第一个参数名
 * @return {*}
 */
function getFirstParameter() {
  var url = window.location.href.split('&')[0]
  var paramArray = url.split('?')
  if (paramArray.length == 1) {
    return ''
  } else {
    return paramArray[1]
  }
}

/**
 * @brief: 强制刷新到不带二次分享参数页面
 * @return {*}
 */
function refreshUrl() {
  var url = '',
    reqStr = ''
  var firstParameter = getFirstParameter()
  if (fnGetQueryString('from')) {
    //from为微信二次分享自带参数
    url = funcUrlDel('from')
    var reqIndex = url.indexOf('?')
    reqStr = url.substr(reqIndex) //截取去除from参数后的地址
    if (getlinkSearch('isappinstalled', reqStr)) {
      //isappinstalled为微信二次分享自带参数
      url = url.substr(0, url.indexOf('?')) //截取去除isappinstalled参数后的地址
      if (url.indexOf('?') == -1) {
        window.location.href = url + '?' + firstParameter
      } else {
        window.location.href = url
      }
    } else {
      if (url.indexOf('?') == -1) {
        window.location.href = url + '?' + firstParameter
      } else {
        window.location.href = url
      }
    }
  }
}

$(function () {
  refreshUrl() //刷新页面去除一次分享带的参数
  var title = '同觉寺文创平台'
  var share_abstract = '学如来使，做同觉人'
  $.ajax({
    type: 'GET',
    url: '/weChat/getConfig',
    data: 'url=' + encodeURIComponent(window.location.href.split('#')[0], 'UTF-8'),
    success: function (res) {
      var data = JSON.stringify(res.data)
      var result = JSON.parse(data)
      console.log('微信分享', data, result)
      // 这里获取微信配置的相关信息
      /*
      {
        "signature": "83d07fd5009ae1c5bd48a469ae375e523207c18e",
        "jsapi_ticket": "O3SMpm8bG7kJnF36aXbe89irRa-vgs_4CAQs7y_Le4UGgvlVShQUeiK20qBR-fh9rKRSVTSuWjgG7NYIQUEhig",
        "url": "http://192.168.1.34:8060/mobile/home/index.html",
        "nonceStr": "12a58355-be07-4d44-ac6f-670beead7273",
        "timestamp": "1692325443"
      }
      */
      if (result != null) {
        wx.config({
          debug: false,
          appId: 'wx0fec5f39f521e837',
          timestamp: result.timestamp,
          nonceStr: result.nonceStr,
          signature: result.signature,
          jsApiList: [
            'onMenuShareTimeline',
            'onMenuShareAppMessage',
            'onMenuShareQQ',
            'updateAppMessageShareData',
          ],
        })
        wx.ready(function () {
          alert('信息验证通过后会执行') // 页面加载后，这里会执行
          //需在用户可能点击分享按钮前就先调用
          // 自定义“分享给朋友”及“分享到QQ”按钮的分享内容（1.4.0）
          wx.updateAppMessageShareData(
            {
              title: title, // 分享标题
              desc: share_abstract, // 分享描述
              link: location.href, // !分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
              imgUrl: location.origin + '/pc/images/avatar_default.png', // 分享图标
              success: function () {
                // 设置成功
              },
            },
            function (res) {
              //这里是回调函数
            }
          )
          // 2.1 监听“分享给朋友”，按钮点击、自定义分享内容及分享结果接口 （即将废弃）
          wx.onMenuShareAppMessage({
            title: title,
            desc: share_abstract,
            link: location.href,
            imgUrl: location.origin + '/pc/images/avatar_default.png',
            trigger: function (res) {
              // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容，因为客户端分享操作是一个同步操作，这时候使用ajax的回包会还没有返回
              //alert('用户点击发送给朋友');
            },
            success: function (res) {
              alert('已分享')
            },
            cancel: function (res) {
              alert('已取消')
            },
            fail: function (res) {
              alert(JSON.stringify(res))
            },
          })
          // 2.2 监听“分享到朋友圈”按钮点击、自定义分享内容及分享结果接口 （即将废弃）
          wx.onMenuShareTimeline({
            title: title,
            link: location.href,
            imgUrl: location.origin + '/pc/images/avatar_default.png',
            trigger: function (res) {
              // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容，因为客户端分享操作是一个同步操作，这时候使用ajax的回包会还没有返回
              //alert('用户点击分享到朋友圈');
            },
            success: function (res) {
              alert('已分享')
            },
            cancel: function (res) {
              alert('已取消')
            },
            fail: function (res) {
              alert(JSON.stringify(res))
            },
          })
          // 分享给QQ 即将废弃
          wx.onMenuShareQQ({
            title: title,
            desc: share_abstract,
            link: location.href,
            imgUrl: location.origin + '/pc/images/avatar_default.png',
            trigger: function (res) {
              //alert('用户点击发送给朋友');
            },
            success: function (res) {
              alert('已分享')
            },
            cancel: function (res) {
              alert('已取消')
            },
            fail: function (res) {
              alert(JSON.stringify(res))
            },
          })
        })
        /*
                                      wx.error(function (res) {
                                        alert(res.errMsg);
                                      });
          */
      }
    },
    error: function () {},
  })
})
